A high speed server has multiple processors connected to a bus. These processors incorporate agents that interface with the bus to provide bus communications between the processors and, for example, input/output (“I/O”) devices. One of the agents, a “central” agent, handles hardware configuration, initialization, special transactions, and error detection. Another agent, a “symmetric” agent, arbitrates for the bus using a symmetric round-robin arbitration.
Each processor may access common data on the bus using a virtual addressing technique; “common” data is data that is shared between more than one processor. In the processors, virtual addresses are translated into absolute addresses using a hardware structure called a Translation Lookaside Buffer (“TLB”). An entry in the TLB translates a virtual page number into a corresponding physical page number, where the physical page number addresses a processor's local random access memory (“RAM”); the RAM contains a copy of the data corresponding to the virtual address. The entry remains in the TLB until the data copy is no longer required for access or is purged by another processor. As each processor has a copy of the common data in local RAM, it is necessary to purge all TLB entries referencing the data when, for example, the data is changed by another processor. A processor changing the data may execute a purge global translation cache instruction to remove all TLB entries in all TLB queues.
By way of example, the execution of a purge global translation cache instruction in a Hewlett-Packard PA-RISC processor generates a “purge TC transaction,” known in the art, on the bus. When the purge TC transaction is issued, all bus agents assert a TLB Purge Not Done signal (“TND#”) until the purge is completed. The TND# signal remains asserted until all agents have de-asserted the TND# signal and the purge TC transaction completes. Only one outstanding purge TC transaction is issued at a time, though multiple purge TC transactions can be issued. To support multiple purge TC transactions, a purge-TLB queue is implemented internally to each agent to store purge TC transaction information.
In the prior art, the central agent supports a maximum of sixty-four concurrently outstanding purge TC transactions. Thus, for example, up to sixty-four PA-RISC processors can issue purge TC transactions concurrently. However, it is desirable to increase the number of concurrent purge TC transactions to, for example, one hundred and twenty-eight. One prior art solution increases the depth of the purge-TLB queue; however, this solution requires a hardware modification, which is costly.